package com.devehx.wallet.serviceimpl;

import com.devehx.wallet.comm.RechargeState;
import com.devehx.wallet.comm.Wallet;
import com.devehx.wallet.model.Recharge;
import com.devehx.wallet.model.UserAddress;

import java.util.List;

public interface RechargeService {

    /**
     * 获取扫描过的最新区块号码
     */
    int blockNumber();

    /**
     * 修改扫描过的最新区块号码
     */
    void updateNumber(int number);

    /**
     * 是否支持本币种
     *
     * @param address 合约地址
     */
    boolean isCoin(String address);

    /**
     * 是否支持这个地址的充值
     *
     * @param ethAddress 地址
     */
    boolean isAddress(String ethAddress);

    /**
     * 保存充值记录
     *
     * @param model 实体
     */
    void saveRechargeRecord(Recharge model);

    /**
     * 修改状态
     *
     * @param id    id
     * @param state 状态
     */
    void changeState(Integer id, RechargeState state);

    /**
     * 查询所有的用户账户
     */
    List<UserAddress> findAllAddress();

    /**
     * 根据地址查询私钥
     *
     * @param address 地址
     */
    String findKeyByAddress(String address);

    /**
     * 归集
     *
     * @param recharge 归集信息
     */
    void collect(Recharge recharge);

    /**
     * 查询未归集的充值
     */
    List<Recharge> findNoCollectList();

    /**
     * 查询所有未确认的充值
     */
    List<Recharge> findNoConfirmList();

    /**
     * 获取系统钱包信息
     */
    Wallet getWallet();

    /**
     * 将充值状态改成已归集
     */
    void changeCollectOk(Integer id);
}
